草庐IT

Android FrameWork--SytemServer进程fork

全部标签

c++ - 识别文件 (dll/exe) 是否被进程或库锁定

我打算编写一个示例程序来识别某个进程锁定/使用的文件(dll文件)。我们如何使用WINAPI(C/C++函数)以编程方式实现这一点?实际上,当我们执行某些软件升级过程时,其他一些过程可能正在使用该库,这将使升级操作暂时失败。我想在这里举的最好的例子是Unlocker工具,它列出了所有使用特定文件的进程/dll。 最佳答案 您可以尝试自己打开文件以获得独占访问权限。如果任何其他进程打开了它们,这应该会失败。 关于c++-识别文件(dll/exe)是否被进程或库锁定,我们在StackOver

windows - 如何找到其他进程

有人知道我可以用来调试“无法访问该文件,因为它正在被另一个进程使用”异常的工具吗?我怀疑是病毒扫描程序,但我不能确定。 最佳答案 WhoLockMe将告诉您哪个进程正在锁定文件。 关于windows-如何找到其他进程,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/2428215/

c - 从子进程中获取父进程 ID

我使用CreateProcessAPI创建了一个子进程。我需要从子进程中获取父进程的ID。如果我的进程树有一个child和一个孙子。我还需要从孙子那里获取最高父级的进程ID。 最佳答案 您应该使用nativeAPI和GetProcAddress来查找NtQueryInformationProcess的地址。typedefstruct_PROCESS_BASIC_INFORMATION{NTSTATUSExitStatus;PPEBPebBaseAddress;ULONG_PTRAffinityMask;KPRIORITYBasePr

windows - 服务启动的进程无法分配内存

我有一个作为LocalSystem帐户运行的C#服务,它根据需要启动许多其他进程。这几个月一直很好。就在本周,一些子流程崩溃了。我已将远程调试器附加到它们,但它们在内存分配方面失败(C++new运算符返回0x0),这是崩溃的间接原因。有趣的是,如果我将RDP接入机器,我可以轻松地从CMD启动进程,没有任何问题。然而,当服务启动它时,不行。机器运行的是WindowsXPSP3。这不是因为提交费用大约是物理RAM的80%。服务可以使用多少进程或多少内存有一些特殊限制,包括该服务产生的进程?为什么这些进程无法分配内存的任何其他想法。编辑:我已经仔细查看了SysInternals的Procmo

windows - 在驱动程序级别检索进程的命令行参数

你好,我正在编写一个minifilter驱动程序来拦截来自某个进程的所有irp数据包,比如a.exe。因此,在驱动程序代码中,可以通过对启动进程的命令行参数应用检查来完成。有谁知道如何检索命令行参数??提前致谢。 最佳答案 没有受支持的方法可以在内核模式中执行此操作。事实上,试图从内核访问用户模式进程信息通常是一件痛苦的事情。我建议向用户模式服务发出请求,然后它可以找到该信息并将其传递回您的内核组件。但是,有一个未记录的方法可以做到这一点。如果你能得到EPROCESS的句柄目标进程的结构,您可以获得指向PEB的指针(进程环境bloc

Python:给定pid获取用户进程的开始时间

继续问题标题,假设我有2个正在进行的ftp传输并且我想有选择地杀死(在使用taskkill的Windows中)旧的。我将在解析tasklist命令的输出后得到pids。我不知道如何根据开始时间来区分它们-用户过去启动它们的时间。这可以在python中完成吗?我所知道的是pid可以是随机的,即较新的进程可能比旧进程具有更小/更大的pid。所以必须看到开始时间。请帮忙 最佳答案 你可以用psutils做到这一点:直接来自文档:>>>importos,psutil,datetime>>>p=psutil.Process(os.getpid

c - Windows、fork 和 execv

我收到了一个Unix工具,我想在Windows下运行/编译。看了之后,我看到它使用了fork和execv等等。我现在想了解它的作用以及如何在Windows中实现它。代码的作用比这里要求的要多,所以请不要评论这段代码是否有意义。pid=fork();if(pid==0){execv("/usr/bin/java",args);}如果我正确地解释了这一点,那么它只会执行类似使用args数组中提供的参数调用java的操作。所以在Windows中,这可以通过system()或CreateProcess之类的东西轻松实现(我没有阅读如何,只知道这是可以做到的)。但这是我的问题:如果我理解正确,这

c++ - 内存模块是否映射到进程的虚拟空间?

我在Windows上看到函数EnumProcessModules返回为指定进程加载的多个模块(其中一些应该是系统dll,如guard32.dll、version.dll等。)我的问题是:这些模块是否映射到进程的虚拟空间?我可以从主应用程序代码跳转到位于这些模块之一的指令(当然知道地址)吗? 最佳答案 是的,DLL应该映射到进程虚拟地址空间。如果页面中的代码尚未执行,则映射可能不会得到真实物理页面的支持,并且当然执行“随机”代码位而没有正确的初始化或设置代码以正确执行(例如调用处理函数使用一些需要在另一个函数中分配的数据)显然会在一些

c++ - 在 ATL 项目中将 NULL 指针传递给进程外 COM 方法的正确方法

在ATL项目中将NULL指针传递给进程外COM方法的正确方法是什么?我创建了一个通过COM代理托管的COM服务器如果这很重要,我使用的是在Win7上运行的VS2012。服务器项目编译为64位,客户端项目编译为32位IDL看起来类似于下面import"oaidl.idl";import"ocidl.idl";[object,uuid(37EFA952-7036-4398-93A6-6CDAD9DFC005),dual,nonextensible,pointer_default(unique)]interfaceIGame:IDispatch{[id(1)]HRESULTpassNull(

c++ - 如何获得给定进程的窗口站?

比如说,如果我有一个进程ID或者它的句柄,我能得到windowstation吗?该进程运行在什么条件下? 最佳答案 不是直接的,但试试这个:调用EnumWindowStations()在与调用进程相同的Session中枚举可用的窗口站(如果您需要在另一个Session中查询进程,那么这将不起作用)。对于每个窗口站,请调用EnumDesktops()枚举其桌面。对于每个桌面,请调用EnumDesktopWindows()枚举其顶级窗口。对于每个窗口,调用GetWindowThreadProcessId()获取其进程ID并将其与您要查找